package com.ruoyi.merchant.mapper;

import java.util.List;
import com.ruoyi.merchant.domain.MerchantCouponBinding;
import com.ruoyi.merchant.domain.CouponTemplate2;
import org.apache.ibatis.annotations.Param;

/**
 * 商家优惠券绑定Mapper接口
 * 
 * @author xperia
 */
public interface MerchantCouponBindingMapper {

    // 查询已删除的记录
    MerchantCouponBinding selectDeletedBinding(
            @Param("merchantId") Long merchantId,
            @Param("couponId") Long couponId
    );

    // 恢复已删除的记录
    int restoreBinding(MerchantCouponBinding binding);
    
    /**
     * 查询商家已绑定的优惠券模板列表
     * 
     * @param merchantId 商家ID
     * @return 绑定列表
     */
    List<MerchantCouponBinding> selectBindingList(@Param("merchantId") Long merchantId);

    /**
     * 查询可绑定的平台优惠券模板列表
     * 
     * @param merchantId 商家ID
     * @param regionId 区域ID（可选）
     * @return 模板列表
     */
    List<CouponTemplate2> selectAvailableTemplates(@Param("merchantId") Long merchantId, @Param("regionId") Long regionId);

    /**
     * 查询绑定详情
     * 
     * @param bindingId 绑定ID
     * @param merchantId 商家ID
     * @return 绑定信息
     */
    MerchantCouponBinding selectBindingById(@Param("bindingId") Long bindingId, @Param("merchantId") Long merchantId);

    /**
     * 新增绑定
     * 
     * @param binding 绑定信息
     * @return 结果
     */
    int insertBinding(MerchantCouponBinding binding);

    /**
     * 更新绑定状态
     * 
     * @param bindingId 绑定ID
     * @param merchantId 商家ID
     * @param status 状态
     * @return 结果
     */
    int updateBindingStatus(@Param("bindingId") Long bindingId, @Param("merchantId") Long merchantId, @Param("status") Integer status);

    /**
     * 删除绑定
     * 
     * @param bindingId 绑定ID
     * @param merchantId 商家ID
     * @return 结果
     */
    int deleteBinding(@Param("bindingId") Long bindingId, @Param("merchantId") Long merchantId);

    /**
     * 检查是否已绑定
     * 
     * @param merchantId 商家ID
     * @param couponId 优惠券ID
     * @return 数量
     */
    int checkBindingExists(@Param("merchantId") Long merchantId, @Param("couponId") Long couponId);
}

